//
//  hvArrowContainerView.h
//  CustomMapCalloutAnnotation
//	含有箭頭的容器視圖,一般作為彈出框的容器
//  Created by moon on 14-5-8.
//  Copyright (c) 2014年 hv. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface hvArrowContainerView : UIView{
@protected
	CGRect _arrowRect;				//箭頭在本view中的frame
	CGRect _roundedRectangleRect;	//圓角矩形邊框的在本view中的frame
	
	//自定義動作相關控制參數
	BOOL _animated;
	NSTimeInterval _startTime;
	NSTimeInterval _animateDuration;
	CGSize _startContentSize;
	CGSize _endContentSize;
	CADisplayLink *_displayLink;
}
@property(nonatomic,assign) UIPopoverArrowDirection supportedArrowDirections;	//箭頭支持的朝向,默認為any
@property(nonatomic,assign) UIPopoverArrowDirection arrowDirection;	//箭頭的方向
@property(nonatomic,strong) UIView *contentView;	//內容視圖
@property(nonatomic,assign) CGRect anchorRect;		//箭頭指向的區域的frame
@property(nonatomic,assign) CGRect displayArea;		//容器彈出框的區域的frame
/*
 ______________
|  ________    |
| |  pop   |   |->displayArea
| |content |   |
| |        |   |
| |__ _____|   |
|  __V______   |
| | touched |----->anchorRect
| |_________|  |
|______________|
 
這裏anchorRect的displayArea的作用是用於計算彈出框的方向以及彈出框適合的大小和位置,anchorRect的displayArea要在同一個座標系中
 */

@property(nonatomic,assign) UIEdgeInsets contentMargin;	//contentView與背景邊框的間距

@property(nonatomic,assign) CGFloat arrowMargin;	//觸碰點與箭頭之間的間距,默認為0
@property(nonatomic,assign) CGFloat arrowOffset;	//箭頭與圓角矩形之間的偏移量,當為正值時,箭頭與矩形背景框部分重疊;負值時,箭頭與矩形背景框分離,默認為0

@property(nonatomic,strong) UIColor *borderColor;	//邊框顔色
@property(nonatomic,assign) CGFloat borderWidth;	//邊框寬度
@property(nonatomic,strong) UIColor *tintColor;		//漸變起始顔色,默認nil
@property(nonatomic,strong) UIColor *tintColor2;	//漸變結束顔色,默認nil,用於tintColor漸變
@property(nonatomic,assign) CGSize arrowSize;		//箭頭的尺寸
@property(nonatomic,assign) CGFloat cornerRadius;	//圓角矩形的邊角圓形半徑,默認為8
@property(nonatomic,readonly) CGPoint arrowPoint;	//返回箭頭尖尖的點在本座標系中的坐標值
/**
 *	初始化
 @param contentView:內容視圖
 @param anchorRect:箭頭指向的區域的frame
 @param displayArea:彈出框可顯示的frame
 @param supportedArrowDirections:支持的箭頭朝向
 */
- (id)initWithContentView:(UIView *)contentView anchorRect:(CGRect)anchorRect displayArea:(CGRect)displayArea supportedArrowDirections:(UIPopoverArrowDirection)supportedArrowDirections;

/**
 *	重新計算箭頭朝向和相狀的尺寸,刷新視圖
 */
- (void)refresh;

/**
 *	動畫改變內容尺寸
 */
- (void)setContentSize:(CGSize)contentSize withAnimated:(BOOL)animated;

/**
 *	箭頭的路徑
 */
- (UIBezierPath *)arrowBorderPath;
//繪製漸變
- (void)drawGradientWithContext:(CGContextRef)context gradientStartPoint:(CGPoint)gradientStartPoint gradientEndPoint:(CGPoint)gradientEndPoint;
@end
